/**
 * Copyright (c) 2010 CWI Amsterdam and others. All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     CWI Amsterdam - initial API and implementation
 *
 * $Id$
 */
package nl.cwi.arne.mcrl2.factory;

import nl.cwi.arne.mcrl2.Action;
import nl.cwi.arne.mcrl2.Allow;
import nl.cwi.arne.mcrl2.Atom;
import nl.cwi.arne.mcrl2.AtomicAction;
import nl.cwi.arne.mcrl2.BasicTerm;
import nl.cwi.arne.mcrl2.Block;
import nl.cwi.arne.mcrl2.Choice;
import nl.cwi.arne.mcrl2.Communication;
import nl.cwi.arne.mcrl2.Comparator;
import nl.cwi.arne.mcrl2.Comparison;
import nl.cwi.arne.mcrl2.CompositeAction;
import nl.cwi.arne.mcrl2.Conjunction;
import nl.cwi.arne.mcrl2.Constraint;
import nl.cwi.arne.mcrl2.Disjunction;
import nl.cwi.arne.mcrl2.Element;
import nl.cwi.arne.mcrl2.Equation;
import nl.cwi.arne.mcrl2.Function;
import nl.cwi.arne.mcrl2.FunctionCall;
import nl.cwi.arne.mcrl2.FunctionType;
import nl.cwi.arne.mcrl2.Hide;
import nl.cwi.arne.mcrl2.IfThenElse;
import nl.cwi.arne.mcrl2.Implication;
import nl.cwi.arne.mcrl2.Instance;
import nl.cwi.arne.mcrl2.Lambda;
import nl.cwi.arne.mcrl2.Nameable;
import nl.cwi.arne.mcrl2.Negation;
import nl.cwi.arne.mcrl2.Parallelism;
import nl.cwi.arne.mcrl2.PrimitiveConstraint;
import nl.cwi.arne.mcrl2.PrimitiveSort;
import nl.cwi.arne.mcrl2.PrimitiveType;
import nl.cwi.arne.mcrl2.Sequence;
import nl.cwi.arne.mcrl2.Sort;
import nl.cwi.arne.mcrl2.SortType;
import nl.cwi.arne.mcrl2.Specification;
import nl.cwi.arne.mcrl2.Structure;
import nl.cwi.arne.mcrl2.Summation;
import nl.cwi.arne.mcrl2.Synchronization;
import nl.cwi.arne.mcrl2.Term;
import nl.cwi.arne.mcrl2.TupleType;
import nl.cwi.arne.mcrl2.Type;
import nl.cwi.arne.mcrl2.UserSort;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * The <b>Package</b> for the model.
 * It contains accessors for the meta objects to represent
 * <ul>
 *   <li>each class,</li>
 *   <li>each feature of each class,</li>
 *   <li>each enum,</li>
 *   <li>and each data type</li>
 * </ul>
 * <!-- end-user-doc -->
 * @see nl.cwi.arne.mcrl2.factory.MCRL2Factory
 * @model kind="package"
 * @generated
 */
public class MCRL2Package extends EPackageImpl {
	/**
	 * The package name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNAME = "mcrl2";

	/**
	 * The package namespace URI.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNS_URI = "http://www.cwi.nl/arne/mcrl2/2010";

	/**
	 * The package namespace name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNS_PREFIX = "mcrl2";

	/**
	 * The singleton instance of the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final MCRL2Package eINSTANCE = nl.cwi.arne.mcrl2.factory.MCRL2Package.init();

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Specification <em>Specification</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Specification
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSpecification()
	 * @generated
	 */
	public static final int SPECIFICATION = 0;

	/**
	 * The feature id for the '<em><b>Sorts</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__SORTS = 0;

	/**
	 * The feature id for the '<em><b>Atoms</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__ATOMS = 1;

	/**
	 * The feature id for the '<em><b>Processes</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__PROCESSES = 2;

	/**
	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__FUNCTIONS = 3;

	/**
	 * The feature id for the '<em><b>Equations</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__EQUATIONS = 4;

	/**
	 * The feature id for the '<em><b>Initial</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION__INITIAL = 5;

	/**
	 * The number of structural features of the '<em>Specification</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SPECIFICATION_FEATURE_COUNT = 6;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Sort <em>Sort</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Sort
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSort()
	 * @generated
	 */
	public static final int SORT = 2;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Nameable <em>Nameable</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Nameable
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getNameable()
	 * @generated
	 */
	public static final int NAMEABLE = 1;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NAMEABLE__NAME = 0;

	/**
	 * The number of structural features of the '<em>Nameable</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NAMEABLE_FEATURE_COUNT = 1;

	/**
	 * The number of structural features of the '<em>Sort</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SORT_FEATURE_COUNT = 0;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.PrimitiveSort <em>Primitive Sort</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.PrimitiveSort
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveSort()
	 * @generated
	 */
	public static final int PRIMITIVE_SORT = 4;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.UserSort <em>User Sort</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.UserSort
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getUserSort()
	 * @generated
	 */
	public static final int USER_SORT = 5;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Structure <em>Structure</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Structure
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getStructure()
	 * @generated
	 */
	public static final int STRUCTURE = 6;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Element <em>Element</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Element
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getElement()
	 * @generated
	 */
	public static final int ELEMENT = 7;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Process <em>Process</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Process
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getProcess()
	 * @generated
	 */
	public static final int PROCESS = 8;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Atom <em>Atom</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Atom
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAtom()
	 * @generated
	 */
	public static final int ATOM = 9;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Action <em>Action</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Action
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAction()
	 * @generated
	 */
	public static final int ACTION = 10;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.AtomicAction <em>Atomic Action</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.AtomicAction
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAtomicAction()
	 * @generated
	 */
	public static final int ATOMIC_ACTION = 11;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.CompositeAction <em>Composite Action</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.CompositeAction
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getCompositeAction()
	 * @generated
	 */
	public static final int COMPOSITE_ACTION = 12;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Synchronization <em>Synchronization</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Synchronization
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSynchronization()
	 * @generated
	 */
	public static final int SYNCHRONIZATION = 13;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Parallelism <em>Parallelism</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Parallelism
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getParallelism()
	 * @generated
	 */
	public static final int PARALLELISM = 14;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Sequence <em>Sequence</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Sequence
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSequence()
	 * @generated
	 */
	public static final int SEQUENCE = 15;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Choice <em>Choice</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Choice
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getChoice()
	 * @generated
	 */
	public static final int CHOICE = 16;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Instance <em>Instance</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Instance
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getInstance()
	 * @generated
	 */
	public static final int INSTANCE = 17;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Implication <em>Implication</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Implication
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getImplication()
	 * @generated
	 */
	public static final int IMPLICATION = 18;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Communication <em>Communication</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Communication
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getCommunication()
	 * @generated
	 */
	public static final int COMMUNICATION = 19;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Allow <em>Allow</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Allow
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAllow()
	 * @generated
	 */
	public static final int ALLOW = 20;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Block <em>Block</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Block
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getBlock()
	 * @generated
	 */
	public static final int BLOCK = 21;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Hide <em>Hide</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Hide
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getHide()
	 * @generated
	 */
	public static final int HIDE = 22;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Summation <em>Summation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Summation
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSummation()
	 * @generated
	 */
	public static final int SUMMATION = 23;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.BasicTerm <em>Basic Term</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.BasicTerm
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getBasicTerm()
	 * @generated
	 */
	public static final int BASIC_TERM = 24;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Function <em>Function</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Function
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunction()
	 * @generated
	 */
	public static final int FUNCTION = 25;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.FunctionType <em>Function Type</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.FunctionType
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunctionType()
	 * @generated
	 */
	public static final int FUNCTION_TYPE = 40;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Term <em>Term</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Term
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getTerm()
	 * @generated
	 */
	public static final int TERM = 3;

	/**
	 * The number of structural features of the '<em>Term</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int TERM_FEATURE_COUNT = 0;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_SORT__NAME = NAMEABLE__NAME;

	/**
	 * The number of structural features of the '<em>Primitive Sort</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_SORT_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int USER_SORT__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Definition</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int USER_SORT__DEFINITION = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>User Sort</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int USER_SORT_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STRUCTURE__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STRUCTURE__ELEMENTS = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Structure</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STRUCTURE_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT__PARAMETERS = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Structure</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT__STRUCTURE = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Discriminator</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT__DISCRIMINATOR = NAMEABLE_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Element</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROCESS__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROCESS__ARGUMENTS = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Action</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROCESS__ACTION = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Process</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROCESS_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOM__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Type</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOM__TYPE = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Atom</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOM_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Action</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ACTION_FEATURE_COUNT = 0;

	/**
	 * The feature id for the '<em><b>Atom</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOMIC_ACTION__ATOM = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOMIC_ACTION__ARGUMENTS = ACTION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Time</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOMIC_ACTION__TIME = ACTION_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Atomic Action</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ATOMIC_ACTION_FEATURE_COUNT = ACTION_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPOSITE_ACTION__ACTIONS = ACTION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Composite Action</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPOSITE_ACTION_FEATURE_COUNT = ACTION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SYNCHRONIZATION__ACTIONS = COMPOSITE_ACTION__ACTIONS;

	/**
	 * The number of structural features of the '<em>Synchronization</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SYNCHRONIZATION_FEATURE_COUNT = COMPOSITE_ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PARALLELISM__ACTIONS = COMPOSITE_ACTION__ACTIONS;

	/**
	 * The number of structural features of the '<em>Parallelism</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PARALLELISM_FEATURE_COUNT = COMPOSITE_ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENCE__ACTIONS = COMPOSITE_ACTION__ACTIONS;

	/**
	 * The number of structural features of the '<em>Sequence</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENCE_FEATURE_COUNT = COMPOSITE_ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Actions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CHOICE__ACTIONS = COMPOSITE_ACTION__ACTIONS;

	/**
	 * The number of structural features of the '<em>Choice</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CHOICE_FEATURE_COUNT = COMPOSITE_ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Process</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INSTANCE__PROCESS = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INSTANCE__ARGUMENTS = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Instance</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INSTANCE_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Condition</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IMPLICATION__CONDITION = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Action</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IMPLICATION__ACTION = ACTION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Else</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IMPLICATION__ELSE = ACTION_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Implication</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IMPLICATION_FEATURE_COUNT = ACTION_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Implications</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMMUNICATION__IMPLICATIONS = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Parallelism</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMMUNICATION__PARALLELISM = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Communication</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMMUNICATION_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Child</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ALLOW__CHILD = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Atoms</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ALLOW__ATOMS = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Allow</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ALLOW_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Child</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BLOCK__CHILD = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Atoms</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BLOCK__ATOMS = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Block</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BLOCK_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Child</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int HIDE__CHILD = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Atoms</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int HIDE__ATOMS = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Hide</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int HIDE_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SUMMATION__ARGUMENTS = ACTION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Action</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SUMMATION__ACTION = ACTION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Summation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SUMMATION_FEATURE_COUNT = ACTION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BASIC_TERM__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Type</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BASIC_TERM__TYPE = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Basic Term</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BASIC_TERM_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION__NAME = NAMEABLE__NAME;

	/**
	 * The feature id for the '<em><b>Type</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION__TYPE = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Function</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.FunctionCall <em>Function Call</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.FunctionCall
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunctionCall()
	 * @generated
	 */
	public static final int FUNCTION_CALL = 35;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Constraint <em>Constraint</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Constraint
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getConstraint()
	 * @generated
	 */
	public static final int CONSTRAINT = 26;

	/**
	 * The number of structural features of the '<em>Constraint</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTRAINT_FEATURE_COUNT = TERM_FEATURE_COUNT + 0;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.PrimitiveConstraint <em>Primitive Constraint</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.PrimitiveConstraint
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveConstraint()
	 * @generated
	 */
	public static final int PRIMITIVE_CONSTRAINT = 27;

	/**
	 * The feature id for the '<em><b>True</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_CONSTRAINT__TRUE = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Primitive Constraint</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_CONSTRAINT_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Conjunction <em>Conjunction</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Conjunction
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getConjunction()
	 * @generated
	 */
	public static final int CONJUNCTION = 28;

	/**
	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONJUNCTION__CHILDREN = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Conjunction</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONJUNCTION_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Disjunction <em>Disjunction</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Disjunction
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getDisjunction()
	 * @generated
	 */
	public static final int DISJUNCTION = 29;

	/**
	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DISJUNCTION__CHILDREN = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Disjunction</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DISJUNCTION_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Negation <em>Negation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Negation
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getNegation()
	 * @generated
	 */
	public static final int NEGATION = 30;

	/**
	 * The feature id for the '<em><b>Child</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NEGATION__CHILD = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Negation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NEGATION_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Comparison <em>Comparison</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Comparison
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getComparison()
	 * @generated
	 */
	public static final int COMPARISON = 31;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPARISON__LEFT = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPARISON__RIGHT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Comparator</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPARISON__COMPARATOR = CONSTRAINT_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Comparison</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int COMPARISON_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 3;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Equation <em>Equation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Equation
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getEquation()
	 * @generated
	 */
	public static final int EQUATION = 32;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__LEFT = 0;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__RIGHT = 1;

	/**
	 * The number of structural features of the '<em>Equation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION_FEATURE_COUNT = 2;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Lambda <em>Lambda</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Lambda
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getLambda()
	 * @generated
	 */
	public static final int LAMBDA = 33;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LAMBDA__ARGUMENTS = TERM_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Body</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LAMBDA__BODY = TERM_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Lambda</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LAMBDA_FEATURE_COUNT = TERM_FEATURE_COUNT + 2;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.IfThenElse <em>If Then Else</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.IfThenElse
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getIfThenElse()
	 * @generated
	 */
	public static final int IF_THEN_ELSE = 34;

	/**
	 * The feature id for the '<em><b>If</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IF_THEN_ELSE__IF = TERM_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Then</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IF_THEN_ELSE__THEN = TERM_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Else</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IF_THEN_ELSE__ELSE = TERM_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>If Then Else</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int IF_THEN_ELSE_FEATURE_COUNT = TERM_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Function</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_CALL__FUNCTION = TERM_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_CALL__ARGUMENTS = TERM_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Function Call</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_CALL_FEATURE_COUNT = TERM_FEATURE_COUNT + 2;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Type <em>Type</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Type
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getType()
	 * @generated
	 */
	public static final int TYPE = 36;

	/**
	 * The number of structural features of the '<em>Type</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int TYPE_FEATURE_COUNT = 0;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.PrimitiveType <em>Primitive Type</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.PrimitiveType
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveType()
	 * @generated
	 */
	public static final int PRIMITIVE_TYPE = 37;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_TYPE__NAME = NAMEABLE__NAME;

	/**
	 * The number of structural features of the '<em>Primitive Type</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PRIMITIVE_TYPE_FEATURE_COUNT = NAMEABLE_FEATURE_COUNT + 0;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.SortType <em>Sort Type</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.SortType
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSortType()
	 * @generated
	 */
	public static final int SORT_TYPE = 38;

	/**
	 * The feature id for the '<em><b>Sort</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SORT_TYPE__SORT = TYPE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Sort Type</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SORT_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.TupleType <em>Tuple Type</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.TupleType
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getTupleType()
	 * @generated
	 */
	public static final int TUPLE_TYPE = 39;

	/**
	 * The feature id for the '<em><b>Children</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int TUPLE_TYPE__CHILDREN = TYPE_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Tuple Type</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int TUPLE_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Domain</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_TYPE__DOMAIN = TYPE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Codomain</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_TYPE__CODOMAIN = TYPE_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Function Type</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int FUNCTION_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 2;

	/**
	 * The meta object id for the '{@link nl.cwi.arne.mcrl2.Comparator <em>Comparator</em>}' enum.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see nl.cwi.arne.mcrl2.Comparator
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getComparator()
	 * @generated
	 */
	public static final int COMPARATOR = 41;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass specificationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass sortEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass primitiveSortEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass userSortEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass structureEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass elementEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass processEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass atomEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass actionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass atomicActionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass compositeActionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass synchronizationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass parallelismEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass sequenceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass choiceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass instanceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass implicationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass communicationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass allowEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass blockEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass hideEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass nameableEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass summationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass basicTermEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass functionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass functionTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass tupleTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass functionCallEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass typeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass primitiveTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass sortTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass termEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass constraintEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass primitiveConstraintEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass conjunctionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass disjunctionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass negationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass comparisonEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass equationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass lambdaEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass ifThenElseEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum comparatorEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private MCRL2Package() {
		super(eNS_URI, MCRL2Factory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link MCRL2Package#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static MCRL2Package init() {
		if (isInited) return (MCRL2Package)EPackage.Registry.INSTANCE.getEPackage(MCRL2Package.eNS_URI);

		// Obtain or create and register package
		MCRL2Package theMCRL2Package = (MCRL2Package)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof MCRL2Package ? EPackage.Registry.INSTANCE.get(eNS_URI) : new MCRL2Package());

		isInited = true;

		// Create package meta-data objects
		theMCRL2Package.createPackageContents();

		// Initialize created meta-data
		theMCRL2Package.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theMCRL2Package.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(MCRL2Package.eNS_URI, theMCRL2Package);
		return theMCRL2Package;
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Specification <em>Specification</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Specification</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification
	 * @generated
	 */
	public EClass getSpecification() {
		return specificationEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Specification#getAtoms <em>Atoms</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Atoms</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getAtoms()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Atoms() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Specification#getProcesses <em>Processes</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Processes</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getProcesses()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Processes() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Specification#getFunctions <em>Functions</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Functions</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getFunctions()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Functions() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(3);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Specification#getEquations <em>Equations</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Equations</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getEquations()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Equations() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(4);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Specification#getInitial <em>Initial</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Initial</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getInitial()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Initial() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(5);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Specification#getSorts <em>Sorts</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Sorts</em>'.
	 * @see nl.cwi.arne.mcrl2.Specification#getSorts()
	 * @see #getSpecification()
	 * @generated
	 */
	public EReference getSpecification_Sorts() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Sort <em>Sort</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Sort</em>'.
	 * @see nl.cwi.arne.mcrl2.Sort
	 * @generated
	 */
	public EClass getSort() {
		return sortEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.PrimitiveSort <em>Primitive Sort</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Primitive Sort</em>'.
	 * @see nl.cwi.arne.mcrl2.PrimitiveSort
	 * @generated
	 */
	public EClass getPrimitiveSort() {
		return primitiveSortEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.UserSort <em>User Sort</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>User Sort</em>'.
	 * @see nl.cwi.arne.mcrl2.UserSort
	 * @generated
	 */
	public EClass getUserSort() {
		return userSortEClass;
	}

	/**
	 * Returns the meta object for the attribute '{@link nl.cwi.arne.mcrl2.UserSort#getDefinition <em>Definition</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Definition</em>'.
	 * @see nl.cwi.arne.mcrl2.UserSort#getDefinition()
	 * @see #getUserSort()
	 * @generated
	 */
	public EAttribute getUserSort_Definition() {
		return (EAttribute)userSortEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Structure <em>Structure</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Structure</em>'.
	 * @see nl.cwi.arne.mcrl2.Structure
	 * @generated
	 */
	public EClass getStructure() {
		return structureEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Structure#getElements <em>Elements</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Elements</em>'.
	 * @see nl.cwi.arne.mcrl2.Structure#getElements()
	 * @see #getStructure()
	 * @generated
	 */
	public EReference getStructure_Elements() {
		return (EReference)structureEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Element <em>Element</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Element</em>'.
	 * @see nl.cwi.arne.mcrl2.Element
	 * @generated
	 */
	public EClass getElement() {
		return elementEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Element#getParameters <em>Parameters</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Parameters</em>'.
	 * @see nl.cwi.arne.mcrl2.Element#getParameters()
	 * @see #getElement()
	 * @generated
	 */
	public EReference getElement_Parameters() {
		return (EReference)elementEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the container reference '{@link nl.cwi.arne.mcrl2.Element#getStructure <em>Structure</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the container reference '<em>Structure</em>'.
	 * @see nl.cwi.arne.mcrl2.Element#getStructure()
	 * @see #getElement()
	 * @generated
	 */
	public EReference getElement_Structure() {
		return (EReference)elementEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Element#getDiscriminator <em>Discriminator</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Discriminator</em>'.
	 * @see nl.cwi.arne.mcrl2.Element#getDiscriminator()
	 * @see #getElement()
	 * @generated
	 */
	public EReference getElement_Discriminator() {
		return (EReference)elementEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Process <em>Process</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Process</em>'.
	 * @see nl.cwi.arne.mcrl2.Process
	 * @generated
	 */
	public EClass getProcess() {
		return processEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Process#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.Process#getArguments()
	 * @see #getProcess()
	 * @generated
	 */
	public EReference getProcess_Arguments() {
		return (EReference)processEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Process#getAction <em>Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Action</em>'.
	 * @see nl.cwi.arne.mcrl2.Process#getAction()
	 * @see #getProcess()
	 * @generated
	 */
	public EReference getProcess_Action() {
		return (EReference)processEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Atom <em>Atom</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Atom</em>'.
	 * @see nl.cwi.arne.mcrl2.Atom
	 * @generated
	 */
	public EClass getAtom() {
		return atomEClass;
	}

	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.Atom#getType <em>Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Type</em>'.
	 * @see nl.cwi.arne.mcrl2.Atom#getType()
	 * @see #getAtom()
	 * @generated
	 */
	public EReference getAtom_Type() {
		return (EReference)atomEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Action <em>Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Action</em>'.
	 * @see nl.cwi.arne.mcrl2.Action
	 * @generated
	 */
	public EClass getAction() {
		return actionEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.AtomicAction <em>Atomic Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Atomic Action</em>'.
	 * @see nl.cwi.arne.mcrl2.AtomicAction
	 * @generated
	 */
	public EClass getAtomicAction() {
		return atomicActionEClass;
	}

	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.AtomicAction#getAtom <em>Atom</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Atom</em>'.
	 * @see nl.cwi.arne.mcrl2.AtomicAction#getAtom()
	 * @see #getAtomicAction()
	 * @generated
	 */
	public EReference getAtomicAction_Atom() {
		return (EReference)atomicActionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.AtomicAction#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.AtomicAction#getArguments()
	 * @see #getAtomicAction()
	 * @generated
	 */
	public EReference getAtomicAction_Arguments() {
		return (EReference)atomicActionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for the attribute '{@link nl.cwi.arne.mcrl2.AtomicAction#getTime <em>Time</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Time</em>'.
	 * @see nl.cwi.arne.mcrl2.AtomicAction#getTime()
	 * @see #getAtomicAction()
	 * @generated
	 */
	public EAttribute getAtomicAction_Time() {
		return (EAttribute)atomicActionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.CompositeAction <em>Composite Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Composite Action</em>'.
	 * @see nl.cwi.arne.mcrl2.CompositeAction
	 * @generated
	 */
	public EClass getCompositeAction() {
		return compositeActionEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.CompositeAction#getActions <em>Actions</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Actions</em>'.
	 * @see nl.cwi.arne.mcrl2.CompositeAction#getActions()
	 * @see #getCompositeAction()
	 * @generated
	 */
	public EReference getCompositeAction_Actions() {
		return (EReference)compositeActionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Synchronization <em>Synchronization</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Synchronization</em>'.
	 * @see nl.cwi.arne.mcrl2.Synchronization
	 * @generated
	 */
	public EClass getSynchronization() {
		return synchronizationEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Parallelism <em>Parallelism</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Parallelism</em>'.
	 * @see nl.cwi.arne.mcrl2.Parallelism
	 * @generated
	 */
	public EClass getParallelism() {
		return parallelismEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Sequence <em>Sequence</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Sequence</em>'.
	 * @see nl.cwi.arne.mcrl2.Sequence
	 * @generated
	 */
	public EClass getSequence() {
		return sequenceEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Choice <em>Choice</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Choice</em>'.
	 * @see nl.cwi.arne.mcrl2.Choice
	 * @generated
	 */
	public EClass getChoice() {
		return choiceEClass;
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Instance <em>Instance</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Instance</em>'.
	 * @see nl.cwi.arne.mcrl2.Instance
	 * @generated
	 */
	public EClass getInstance() {
		return instanceEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Instance#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.Instance#getArguments()
	 * @see #getInstance()
	 * @generated
	 */
	public EReference getInstance_Arguments() {
		return (EReference)instanceEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.Instance#getProcess <em>Process</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Process</em>'.
	 * @see nl.cwi.arne.mcrl2.Instance#getProcess()
	 * @see #getInstance()
	 * @generated
	 */
	public EReference getInstance_Process() {
		return (EReference)instanceEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Implication <em>Implication</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Implication</em>'.
	 * @see nl.cwi.arne.mcrl2.Implication
	 * @generated
	 */
	public EClass getImplication() {
		return implicationEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Implication#getCondition <em>Condition</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Condition</em>'.
	 * @see nl.cwi.arne.mcrl2.Implication#getCondition()
	 * @see #getImplication()
	 * @generated
	 */
	public EReference getImplication_Condition() {
		return (EReference)implicationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Implication#getAction <em>Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Action</em>'.
	 * @see nl.cwi.arne.mcrl2.Implication#getAction()
	 * @see #getImplication()
	 * @generated
	 */
	public EReference getImplication_Action() {
		return (EReference)implicationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Implication#getElse <em>Else</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Else</em>'.
	 * @see nl.cwi.arne.mcrl2.Implication#getElse()
	 * @see #getImplication()
	 * @generated
	 */
	public EReference getImplication_Else() {
		return (EReference)implicationEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Communication <em>Communication</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Communication</em>'.
	 * @see nl.cwi.arne.mcrl2.Communication
	 * @generated
	 */
	public EClass getCommunication() {
		return communicationEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Communication#getImplications <em>Implications</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Implications</em>'.
	 * @see nl.cwi.arne.mcrl2.Communication#getImplications()
	 * @see #getCommunication()
	 * @generated
	 */
	public EReference getCommunication_Implications() {
		return (EReference)communicationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Communication#getParallelism <em>Parallelism</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Parallelism</em>'.
	 * @see nl.cwi.arne.mcrl2.Communication#getParallelism()
	 * @see #getCommunication()
	 * @generated
	 */
	public EReference getCommunication_Parallelism() {
		return (EReference)communicationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Allow <em>Allow</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Allow</em>'.
	 * @see nl.cwi.arne.mcrl2.Allow
	 * @generated
	 */
	public EClass getAllow() {
		return allowEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Allow#getChild <em>Child</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Child</em>'.
	 * @see nl.cwi.arne.mcrl2.Allow#getChild()
	 * @see #getAllow()
	 * @generated
	 */
	public EReference getAllow_Child() {
		return (EReference)allowEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the reference list '{@link nl.cwi.arne.mcrl2.Allow#getAtoms <em>Atoms</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Atoms</em>'.
	 * @see nl.cwi.arne.mcrl2.Allow#getAtoms()
	 * @see #getAllow()
	 * @generated
	 */
	public EReference getAllow_Atoms() {
		return (EReference)allowEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Block <em>Block</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Block</em>'.
	 * @see nl.cwi.arne.mcrl2.Block
	 * @generated
	 */
	public EClass getBlock() {
		return blockEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Block#getChild <em>Child</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Child</em>'.
	 * @see nl.cwi.arne.mcrl2.Block#getChild()
	 * @see #getBlock()
	 * @generated
	 */
	public EReference getBlock_Child() {
		return (EReference)blockEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the reference list '{@link nl.cwi.arne.mcrl2.Block#getAtoms <em>Atoms</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Atoms</em>'.
	 * @see nl.cwi.arne.mcrl2.Block#getAtoms()
	 * @see #getBlock()
	 * @generated
	 */
	public EReference getBlock_Atoms() {
		return (EReference)blockEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Hide <em>Hide</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Hide</em>'.
	 * @see nl.cwi.arne.mcrl2.Hide
	 * @generated
	 */
	public EClass getHide() {
		return hideEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Hide#getChild <em>Child</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Child</em>'.
	 * @see nl.cwi.arne.mcrl2.Hide#getChild()
	 * @see #getHide()
	 * @generated
	 */
	public EReference getHide_Child() {
		return (EReference)hideEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the reference list '{@link nl.cwi.arne.mcrl2.Hide#getAtoms <em>Atoms</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Atoms</em>'.
	 * @see nl.cwi.arne.mcrl2.Hide#getAtoms()
	 * @see #getHide()
	 * @generated
	 */
	public EReference getHide_Atoms() {
		return (EReference)hideEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Nameable <em>Nameable</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Nameable</em>'.
	 * @see nl.cwi.arne.mcrl2.Nameable
	 * @generated
	 */
	public EClass getNameable() {
		return nameableEClass;
	}

	/**
	 * Returns the meta object for the attribute '{@link nl.cwi.arne.mcrl2.Nameable#getName <em>Name</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Name</em>'.
	 * @see nl.cwi.arne.mcrl2.Nameable#getName()
	 * @see #getNameable()
	 * @generated
	 */
	public EAttribute getNameable_Name() {
		return (EAttribute)nameableEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Summation <em>Summation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Summation</em>'.
	 * @see nl.cwi.arne.mcrl2.Summation
	 * @generated
	 */
	public EClass getSummation() {
		return summationEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Summation#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.Summation#getArguments()
	 * @see #getSummation()
	 * @generated
	 */
	public EReference getSummation_Arguments() {
		return (EReference)summationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Summation#getAction <em>Action</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Action</em>'.
	 * @see nl.cwi.arne.mcrl2.Summation#getAction()
	 * @see #getSummation()
	 * @generated
	 */
	public EReference getSummation_Action() {
		return (EReference)summationEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.BasicTerm <em>Basic Term</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Basic Term</em>'.
	 * @see nl.cwi.arne.mcrl2.BasicTerm
	 * @generated
	 */
	public EClass getBasicTerm() {
		return basicTermEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.BasicTerm#getType <em>Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Type</em>'.
	 * @see nl.cwi.arne.mcrl2.BasicTerm#getType()
	 * @see #getBasicTerm()
	 * @generated
	 */
	public EReference getBasicTerm_Type() {
		return (EReference)basicTermEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Function <em>Function</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Function</em>'.
	 * @see nl.cwi.arne.mcrl2.Function
	 * @generated
	 */
	public EClass getFunction() {
		return functionEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Function#getType <em>Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Type</em>'.
	 * @see nl.cwi.arne.mcrl2.Function#getType()
	 * @see #getFunction()
	 * @generated
	 */
	public EReference getFunction_Type() {
		return (EReference)functionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.FunctionType <em>Function Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Function Type</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionType
	 * @generated
	 */
	public EClass getFunctionType() {
		return functionTypeEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.FunctionType#getDomain <em>Domain</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Domain</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionType#getDomain()
	 * @see #getFunctionType()
	 * @generated
	 */
	public EReference getFunctionType_Domain() {
		return (EReference)functionTypeEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.FunctionType#getCodomain <em>Codomain</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Codomain</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionType#getCodomain()
	 * @see #getFunctionType()
	 * @generated
	 */
	public EReference getFunctionType_Codomain() {
		return (EReference)functionTypeEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.TupleType <em>Tuple Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Tuple Type</em>'.
	 * @see nl.cwi.arne.mcrl2.TupleType
	 * @generated
	 */
	public EClass getTupleType() {
		return tupleTypeEClass;
	}


	/**
	 * Returns the meta object for the reference list '{@link nl.cwi.arne.mcrl2.TupleType#getChildren <em>Children</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Children</em>'.
	 * @see nl.cwi.arne.mcrl2.TupleType#getChildren()
	 * @see #getTupleType()
	 * @generated
	 */
	public EReference getTupleType_Children() {
		return (EReference)tupleTypeEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.FunctionCall <em>Function Call</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Function Call</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionCall
	 * @generated
	 */
	public EClass getFunctionCall() {
		return functionCallEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.FunctionCall#getFunction <em>Function</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Function</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionCall#getFunction()
	 * @see #getFunctionCall()
	 * @generated
	 */
	public EReference getFunctionCall_Function() {
		return (EReference)functionCallEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.FunctionCall#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.FunctionCall#getArguments()
	 * @see #getFunctionCall()
	 * @generated
	 */
	public EReference getFunctionCall_Arguments() {
		return (EReference)functionCallEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Type <em>Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Type</em>'.
	 * @see nl.cwi.arne.mcrl2.Type
	 * @generated
	 */
	public EClass getType() {
		return typeEClass;
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.PrimitiveType <em>Primitive Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Primitive Type</em>'.
	 * @see nl.cwi.arne.mcrl2.PrimitiveType
	 * @generated
	 */
	public EClass getPrimitiveType() {
		return primitiveTypeEClass;
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.SortType <em>Sort Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Sort Type</em>'.
	 * @see nl.cwi.arne.mcrl2.SortType
	 * @generated
	 */
	public EClass getSortType() {
		return sortTypeEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link nl.cwi.arne.mcrl2.SortType#getSort <em>Sort</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Sort</em>'.
	 * @see nl.cwi.arne.mcrl2.SortType#getSort()
	 * @see #getSortType()
	 * @generated
	 */
	public EReference getSortType_Sort() {
		return (EReference)sortTypeEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Term <em>Term</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Term</em>'.
	 * @see nl.cwi.arne.mcrl2.Term
	 * @generated
	 */
	public EClass getTerm() {
		return termEClass;
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Constraint <em>Constraint</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Constraint</em>'.
	 * @see nl.cwi.arne.mcrl2.Constraint
	 * @generated
	 */
	public EClass getConstraint() {
		return constraintEClass;
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.PrimitiveConstraint <em>Primitive Constraint</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Primitive Constraint</em>'.
	 * @see nl.cwi.arne.mcrl2.PrimitiveConstraint
	 * @generated
	 */
	public EClass getPrimitiveConstraint() {
		return primitiveConstraintEClass;
	}


	/**
	 * Returns the meta object for the attribute '{@link nl.cwi.arne.mcrl2.PrimitiveConstraint#isTrue <em>True</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>True</em>'.
	 * @see nl.cwi.arne.mcrl2.PrimitiveConstraint#isTrue()
	 * @see #getPrimitiveConstraint()
	 * @generated
	 */
	public EAttribute getPrimitiveConstraint_True() {
		return (EAttribute)primitiveConstraintEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Conjunction <em>Conjunction</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Conjunction</em>'.
	 * @see nl.cwi.arne.mcrl2.Conjunction
	 * @generated
	 */
	public EClass getConjunction() {
		return conjunctionEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Conjunction#getChildren <em>Children</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Children</em>'.
	 * @see nl.cwi.arne.mcrl2.Conjunction#getChildren()
	 * @see #getConjunction()
	 * @generated
	 */
	public EReference getConjunction_Children() {
		return (EReference)conjunctionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Disjunction <em>Disjunction</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Disjunction</em>'.
	 * @see nl.cwi.arne.mcrl2.Disjunction
	 * @generated
	 */
	public EClass getDisjunction() {
		return disjunctionEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Disjunction#getChildren <em>Children</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Children</em>'.
	 * @see nl.cwi.arne.mcrl2.Disjunction#getChildren()
	 * @see #getDisjunction()
	 * @generated
	 */
	public EReference getDisjunction_Children() {
		return (EReference)disjunctionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Negation <em>Negation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Negation</em>'.
	 * @see nl.cwi.arne.mcrl2.Negation
	 * @generated
	 */
	public EClass getNegation() {
		return negationEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Negation#getChild <em>Child</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Child</em>'.
	 * @see nl.cwi.arne.mcrl2.Negation#getChild()
	 * @see #getNegation()
	 * @generated
	 */
	public EReference getNegation_Child() {
		return (EReference)negationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Comparison <em>Comparison</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Comparison</em>'.
	 * @see nl.cwi.arne.mcrl2.Comparison
	 * @generated
	 */
	public EClass getComparison() {
		return comparisonEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Comparison#getLeft <em>Left</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Left</em>'.
	 * @see nl.cwi.arne.mcrl2.Comparison#getLeft()
	 * @see #getComparison()
	 * @generated
	 */
	public EReference getComparison_Left() {
		return (EReference)comparisonEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Comparison#getRight <em>Right</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Right</em>'.
	 * @see nl.cwi.arne.mcrl2.Comparison#getRight()
	 * @see #getComparison()
	 * @generated
	 */
	public EReference getComparison_Right() {
		return (EReference)comparisonEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the attribute '{@link nl.cwi.arne.mcrl2.Comparison#getComparator <em>Comparator</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Comparator</em>'.
	 * @see nl.cwi.arne.mcrl2.Comparison#getComparator()
	 * @see #getComparison()
	 * @generated
	 */
	public EAttribute getComparison_Comparator() {
		return (EAttribute)comparisonEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Equation <em>Equation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Equation</em>'.
	 * @see nl.cwi.arne.mcrl2.Equation
	 * @generated
	 */
	public EClass getEquation() {
		return equationEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Equation#getLeft <em>Left</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Left</em>'.
	 * @see nl.cwi.arne.mcrl2.Equation#getLeft()
	 * @see #getEquation()
	 * @generated
	 */
	public EReference getEquation_Left() {
		return (EReference)equationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Equation#getRight <em>Right</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Right</em>'.
	 * @see nl.cwi.arne.mcrl2.Equation#getRight()
	 * @see #getEquation()
	 * @generated
	 */
	public EReference getEquation_Right() {
		return (EReference)equationEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.Lambda <em>Lambda</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Lambda</em>'.
	 * @see nl.cwi.arne.mcrl2.Lambda
	 * @generated
	 */
	public EClass getLambda() {
		return lambdaEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link nl.cwi.arne.mcrl2.Lambda#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Arguments</em>'.
	 * @see nl.cwi.arne.mcrl2.Lambda#getArguments()
	 * @see #getLambda()
	 * @generated
	 */
	public EReference getLambda_Arguments() {
		return (EReference)lambdaEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.Lambda#getBody <em>Body</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Body</em>'.
	 * @see nl.cwi.arne.mcrl2.Lambda#getBody()
	 * @see #getLambda()
	 * @generated
	 */
	public EReference getLambda_Body() {
		return (EReference)lambdaEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link nl.cwi.arne.mcrl2.IfThenElse <em>If Then Else</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>If Then Else</em>'.
	 * @see nl.cwi.arne.mcrl2.IfThenElse
	 * @generated
	 */
	public EClass getIfThenElse() {
		return ifThenElseEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.IfThenElse#getIf <em>If</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>If</em>'.
	 * @see nl.cwi.arne.mcrl2.IfThenElse#getIf()
	 * @see #getIfThenElse()
	 * @generated
	 */
	public EReference getIfThenElse_If() {
		return (EReference)ifThenElseEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.IfThenElse#getThen <em>Then</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Then</em>'.
	 * @see nl.cwi.arne.mcrl2.IfThenElse#getThen()
	 * @see #getIfThenElse()
	 * @generated
	 */
	public EReference getIfThenElse_Then() {
		return (EReference)ifThenElseEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the containment reference '{@link nl.cwi.arne.mcrl2.IfThenElse#getElse <em>Else</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Else</em>'.
	 * @see nl.cwi.arne.mcrl2.IfThenElse#getElse()
	 * @see #getIfThenElse()
	 * @generated
	 */
	public EReference getIfThenElse_Else() {
		return (EReference)ifThenElseEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for enum '{@link nl.cwi.arne.mcrl2.Comparator <em>Comparator</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for enum '<em>Comparator</em>'.
	 * @see nl.cwi.arne.mcrl2.Comparator
	 * @generated
	 */
	public EEnum getComparator() {
		return comparatorEEnum;
	}


	/**
	 * Returns the factory that creates the instances of the model.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the factory that creates the instances of the model.
	 * @generated
	 */
	public MCRL2Factory getMCRL2Factory() {
		return (MCRL2Factory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		specificationEClass = createEClass(SPECIFICATION);
		createEReference(specificationEClass, SPECIFICATION__SORTS);
		createEReference(specificationEClass, SPECIFICATION__ATOMS);
		createEReference(specificationEClass, SPECIFICATION__PROCESSES);
		createEReference(specificationEClass, SPECIFICATION__FUNCTIONS);
		createEReference(specificationEClass, SPECIFICATION__EQUATIONS);
		createEReference(specificationEClass, SPECIFICATION__INITIAL);

		nameableEClass = createEClass(NAMEABLE);
		createEAttribute(nameableEClass, NAMEABLE__NAME);

		sortEClass = createEClass(SORT);

		termEClass = createEClass(TERM);

		primitiveSortEClass = createEClass(PRIMITIVE_SORT);

		userSortEClass = createEClass(USER_SORT);
		createEAttribute(userSortEClass, USER_SORT__DEFINITION);

		structureEClass = createEClass(STRUCTURE);
		createEReference(structureEClass, STRUCTURE__ELEMENTS);

		elementEClass = createEClass(ELEMENT);
		createEReference(elementEClass, ELEMENT__PARAMETERS);
		createEReference(elementEClass, ELEMENT__STRUCTURE);
		createEReference(elementEClass, ELEMENT__DISCRIMINATOR);

		processEClass = createEClass(PROCESS);
		createEReference(processEClass, PROCESS__ARGUMENTS);
		createEReference(processEClass, PROCESS__ACTION);

		atomEClass = createEClass(ATOM);
		createEReference(atomEClass, ATOM__TYPE);

		actionEClass = createEClass(ACTION);

		atomicActionEClass = createEClass(ATOMIC_ACTION);
		createEReference(atomicActionEClass, ATOMIC_ACTION__ATOM);
		createEReference(atomicActionEClass, ATOMIC_ACTION__ARGUMENTS);
		createEAttribute(atomicActionEClass, ATOMIC_ACTION__TIME);

		compositeActionEClass = createEClass(COMPOSITE_ACTION);
		createEReference(compositeActionEClass, COMPOSITE_ACTION__ACTIONS);

		synchronizationEClass = createEClass(SYNCHRONIZATION);

		parallelismEClass = createEClass(PARALLELISM);

		sequenceEClass = createEClass(SEQUENCE);

		choiceEClass = createEClass(CHOICE);

		instanceEClass = createEClass(INSTANCE);
		createEReference(instanceEClass, INSTANCE__PROCESS);
		createEReference(instanceEClass, INSTANCE__ARGUMENTS);

		implicationEClass = createEClass(IMPLICATION);
		createEReference(implicationEClass, IMPLICATION__CONDITION);
		createEReference(implicationEClass, IMPLICATION__ACTION);
		createEReference(implicationEClass, IMPLICATION__ELSE);

		communicationEClass = createEClass(COMMUNICATION);
		createEReference(communicationEClass, COMMUNICATION__IMPLICATIONS);
		createEReference(communicationEClass, COMMUNICATION__PARALLELISM);

		allowEClass = createEClass(ALLOW);
		createEReference(allowEClass, ALLOW__CHILD);
		createEReference(allowEClass, ALLOW__ATOMS);

		blockEClass = createEClass(BLOCK);
		createEReference(blockEClass, BLOCK__CHILD);
		createEReference(blockEClass, BLOCK__ATOMS);

		hideEClass = createEClass(HIDE);
		createEReference(hideEClass, HIDE__CHILD);
		createEReference(hideEClass, HIDE__ATOMS);

		summationEClass = createEClass(SUMMATION);
		createEReference(summationEClass, SUMMATION__ARGUMENTS);
		createEReference(summationEClass, SUMMATION__ACTION);

		basicTermEClass = createEClass(BASIC_TERM);
		createEReference(basicTermEClass, BASIC_TERM__TYPE);

		functionEClass = createEClass(FUNCTION);
		createEReference(functionEClass, FUNCTION__TYPE);

		constraintEClass = createEClass(CONSTRAINT);

		primitiveConstraintEClass = createEClass(PRIMITIVE_CONSTRAINT);
		createEAttribute(primitiveConstraintEClass, PRIMITIVE_CONSTRAINT__TRUE);

		conjunctionEClass = createEClass(CONJUNCTION);
		createEReference(conjunctionEClass, CONJUNCTION__CHILDREN);

		disjunctionEClass = createEClass(DISJUNCTION);
		createEReference(disjunctionEClass, DISJUNCTION__CHILDREN);

		negationEClass = createEClass(NEGATION);
		createEReference(negationEClass, NEGATION__CHILD);

		comparisonEClass = createEClass(COMPARISON);
		createEReference(comparisonEClass, COMPARISON__LEFT);
		createEReference(comparisonEClass, COMPARISON__RIGHT);
		createEAttribute(comparisonEClass, COMPARISON__COMPARATOR);

		equationEClass = createEClass(EQUATION);
		createEReference(equationEClass, EQUATION__LEFT);
		createEReference(equationEClass, EQUATION__RIGHT);

		lambdaEClass = createEClass(LAMBDA);
		createEReference(lambdaEClass, LAMBDA__ARGUMENTS);
		createEReference(lambdaEClass, LAMBDA__BODY);

		ifThenElseEClass = createEClass(IF_THEN_ELSE);
		createEReference(ifThenElseEClass, IF_THEN_ELSE__IF);
		createEReference(ifThenElseEClass, IF_THEN_ELSE__THEN);
		createEReference(ifThenElseEClass, IF_THEN_ELSE__ELSE);

		functionCallEClass = createEClass(FUNCTION_CALL);
		createEReference(functionCallEClass, FUNCTION_CALL__FUNCTION);
		createEReference(functionCallEClass, FUNCTION_CALL__ARGUMENTS);

		typeEClass = createEClass(TYPE);

		primitiveTypeEClass = createEClass(PRIMITIVE_TYPE);

		sortTypeEClass = createEClass(SORT_TYPE);
		createEReference(sortTypeEClass, SORT_TYPE__SORT);

		tupleTypeEClass = createEClass(TUPLE_TYPE);
		createEReference(tupleTypeEClass, TUPLE_TYPE__CHILDREN);

		functionTypeEClass = createEClass(FUNCTION_TYPE);
		createEReference(functionTypeEClass, FUNCTION_TYPE__DOMAIN);
		createEReference(functionTypeEClass, FUNCTION_TYPE__CODOMAIN);

		// Create enums
		comparatorEEnum = createEEnum(COMPARATOR);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		primitiveSortEClass.getESuperTypes().add(this.getNameable());
		primitiveSortEClass.getESuperTypes().add(this.getSort());
		userSortEClass.getESuperTypes().add(this.getNameable());
		userSortEClass.getESuperTypes().add(this.getSort());
		structureEClass.getESuperTypes().add(this.getNameable());
		structureEClass.getESuperTypes().add(this.getSort());
		elementEClass.getESuperTypes().add(this.getNameable());
		processEClass.getESuperTypes().add(this.getNameable());
		atomEClass.getESuperTypes().add(this.getNameable());
		atomicActionEClass.getESuperTypes().add(this.getAction());
		compositeActionEClass.getESuperTypes().add(this.getAction());
		synchronizationEClass.getESuperTypes().add(this.getCompositeAction());
		parallelismEClass.getESuperTypes().add(this.getCompositeAction());
		sequenceEClass.getESuperTypes().add(this.getCompositeAction());
		choiceEClass.getESuperTypes().add(this.getCompositeAction());
		instanceEClass.getESuperTypes().add(this.getAction());
		implicationEClass.getESuperTypes().add(this.getAction());
		communicationEClass.getESuperTypes().add(this.getAction());
		allowEClass.getESuperTypes().add(this.getAction());
		blockEClass.getESuperTypes().add(this.getAction());
		hideEClass.getESuperTypes().add(this.getAction());
		summationEClass.getESuperTypes().add(this.getAction());
		basicTermEClass.getESuperTypes().add(this.getNameable());
		basicTermEClass.getESuperTypes().add(this.getTerm());
		functionEClass.getESuperTypes().add(this.getNameable());
		constraintEClass.getESuperTypes().add(this.getTerm());
		primitiveConstraintEClass.getESuperTypes().add(this.getConstraint());
		conjunctionEClass.getESuperTypes().add(this.getConstraint());
		disjunctionEClass.getESuperTypes().add(this.getConstraint());
		negationEClass.getESuperTypes().add(this.getConstraint());
		comparisonEClass.getESuperTypes().add(this.getConstraint());
		lambdaEClass.getESuperTypes().add(this.getTerm());
		ifThenElseEClass.getESuperTypes().add(this.getTerm());
		functionCallEClass.getESuperTypes().add(this.getTerm());
		primitiveTypeEClass.getESuperTypes().add(this.getNameable());
		primitiveTypeEClass.getESuperTypes().add(this.getType());
		sortTypeEClass.getESuperTypes().add(this.getType());
		tupleTypeEClass.getESuperTypes().add(this.getType());
		functionTypeEClass.getESuperTypes().add(this.getType());

		// Initialize classes and features; add operations and parameters
		initEClass(specificationEClass, Specification.class, "Specification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSpecification_Sorts(), this.getSort(), null, "sorts", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Atoms(), this.getAtom(), null, "atoms", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Processes(), this.getProcess(), null, "processes", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Functions(), this.getFunction(), null, "functions", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Equations(), this.getEquation(), null, "equations", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Initial(), this.getAction(), null, "initial", null, 0, 1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(nameableEClass, Nameable.class, "Nameable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getNameable_Name(), ecorePackage.getEString(), "name", null, 0, 1, Nameable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(sortEClass, Sort.class, "Sort", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		addEOperation(sortEClass, ecorePackage.getEString(), "getName", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(termEClass, Term.class, "Term", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		addEOperation(termEClass, this.getType(), "getType", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(primitiveSortEClass, PrimitiveSort.class, "PrimitiveSort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(userSortEClass, UserSort.class, "UserSort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getUserSort_Definition(), ecorePackage.getEString(), "definition", null, 0, 1, UserSort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(structureEClass, Structure.class, "Structure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getStructure_Elements(), this.getElement(), this.getElement_Structure(), "elements", null, 0, -1, Structure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(elementEClass, Element.class, "Element", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getElement_Parameters(), this.getAtom(), null, "parameters", null, 0, -1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getElement_Structure(), this.getStructure(), this.getStructure_Elements(), "structure", null, 0, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getElement_Discriminator(), this.getFunction(), null, "discriminator", null, 0, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(processEClass, nl.cwi.arne.mcrl2.Process.class, "Process", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProcess_Arguments(), this.getAtom(), null, "arguments", null, 0, -1, nl.cwi.arne.mcrl2.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Action(), this.getAction(), null, "action", null, 0, 1, nl.cwi.arne.mcrl2.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(atomEClass, Atom.class, "Atom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAtom_Type(), this.getType(), null, "type", null, 0, 1, Atom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(actionEClass, Action.class, "Action", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(atomicActionEClass, AtomicAction.class, "AtomicAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAtomicAction_Atom(), this.getAtom(), null, "atom", null, 0, 1, AtomicAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAtomicAction_Arguments(), this.getTerm(), null, "arguments", null, 0, -1, AtomicAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getAtomicAction_Time(), ecorePackage.getEString(), "time", null, 0, 1, AtomicAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(compositeActionEClass, CompositeAction.class, "CompositeAction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCompositeAction_Actions(), this.getAction(), null, "actions", null, 0, -1, CompositeAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		addEOperation(compositeActionEClass, ecorePackage.getEString(), "operator", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(parallelismEClass, Parallelism.class, "Parallelism", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(sequenceEClass, Sequence.class, "Sequence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(instanceEClass, Instance.class, "Instance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getInstance_Process(), this.getProcess(), null, "process", null, 0, 1, Instance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getInstance_Arguments(), this.getTerm(), null, "arguments", null, 0, -1, Instance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(implicationEClass, Implication.class, "Implication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getImplication_Condition(), this.getConstraint(), null, "condition", null, 0, 1, Implication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getImplication_Action(), this.getAction(), null, "action", null, 0, 1, Implication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getImplication_Else(), this.getAction(), null, "else", null, 0, 1, Implication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(communicationEClass, Communication.class, "Communication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCommunication_Implications(), this.getImplication(), null, "implications", null, 0, -1, Communication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCommunication_Parallelism(), this.getParallelism(), null, "parallelism", null, 0, 1, Communication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(allowEClass, Allow.class, "Allow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAllow_Child(), this.getAction(), null, "child", null, 0, 1, Allow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getAllow_Atoms(), this.getAtom(), null, "atoms", null, 0, -1, Allow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(blockEClass, Block.class, "Block", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBlock_Child(), this.getAction(), null, "child", null, 0, 1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBlock_Atoms(), this.getAtom(), null, "atoms", null, 0, -1, Block.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(hideEClass, Hide.class, "Hide", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getHide_Child(), this.getAction(), null, "child", null, 0, 1, Hide.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getHide_Atoms(), this.getAtom(), null, "atoms", null, 0, -1, Hide.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(summationEClass, Summation.class, "Summation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSummation_Arguments(), this.getAtom(), null, "arguments", null, 0, -1, Summation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSummation_Action(), this.getAction(), null, "action", null, 0, 1, Summation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(basicTermEClass, BasicTerm.class, "BasicTerm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBasicTerm_Type(), this.getType(), null, "type", null, 0, 1, BasicTerm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFunction_Type(), this.getFunctionType(), null, "type", null, 0, 1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(constraintEClass, Constraint.class, "Constraint", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(primitiveConstraintEClass, PrimitiveConstraint.class, "PrimitiveConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getPrimitiveConstraint_True(), ecorePackage.getEBoolean(), "true", null, 0, 1, PrimitiveConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(conjunctionEClass, Conjunction.class, "Conjunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getConjunction_Children(), this.getConstraint(), null, "children", null, 0, -1, Conjunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(disjunctionEClass, Disjunction.class, "Disjunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDisjunction_Children(), this.getConstraint(), null, "children", null, 0, -1, Disjunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(negationEClass, Negation.class, "Negation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getNegation_Child(), this.getConstraint(), null, "child", null, 0, 1, Negation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(comparisonEClass, Comparison.class, "Comparison", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getComparison_Left(), this.getTerm(), null, "left", null, 0, 1, Comparison.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getComparison_Right(), this.getTerm(), null, "right", null, 0, 1, Comparison.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getComparison_Comparator(), this.getComparator(), "comparator", null, 0, 1, Comparison.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(equationEClass, Equation.class, "Equation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEquation_Left(), this.getTerm(), null, "left", null, 0, 1, Equation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEquation_Right(), this.getTerm(), null, "right", null, 0, 1, Equation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(lambdaEClass, Lambda.class, "Lambda", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLambda_Arguments(), this.getAtom(), null, "arguments", null, 0, -1, Lambda.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLambda_Body(), this.getTerm(), null, "body", null, 0, 1, Lambda.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(ifThenElseEClass, IfThenElse.class, "IfThenElse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getIfThenElse_If(), this.getConstraint(), null, "if", null, 0, 1, IfThenElse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getIfThenElse_Then(), this.getTerm(), null, "then", null, 0, 1, IfThenElse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getIfThenElse_Else(), this.getTerm(), null, "else", null, 0, 1, IfThenElse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(functionCallEClass, FunctionCall.class, "FunctionCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFunctionCall_Function(), this.getFunction(), null, "function", null, 0, 1, FunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getFunctionCall_Arguments(), this.getTerm(), null, "arguments", null, 0, -1, FunctionCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(typeEClass, Type.class, "Type", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(primitiveTypeEClass, PrimitiveType.class, "PrimitiveType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(sortTypeEClass, SortType.class, "SortType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSortType_Sort(), this.getSort(), null, "sort", null, 0, 1, SortType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(tupleTypeEClass, TupleType.class, "TupleType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTupleType_Children(), this.getType(), null, "children", null, 0, -1, TupleType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(functionTypeEClass, FunctionType.class, "FunctionType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getFunctionType_Domain(), this.getType(), null, "domain", null, 0, 1, FunctionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getFunctionType_Codomain(), this.getType(), null, "codomain", null, 0, 1, FunctionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(comparatorEEnum, Comparator.class, "Comparator");
		addEEnumLiteral(comparatorEEnum, Comparator.EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.NOT_EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.GREATER);
		addEEnumLiteral(comparatorEEnum, Comparator.LESS);
		addEEnumLiteral(comparatorEEnum, Comparator.GREATER_EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.LESS_EQUAL);

		// Create resource
		createResource(eNS_URI);
	}

	/**
	 * <!-- begin-user-doc -->
	 * Defines literals for the meta objects that represent
	 * <ul>
	 *   <li>each class,</li>
	 *   <li>each feature of each class,</li>
	 *   <li>each enum,</li>
	 *   <li>and each data type</li>
	 * </ul>
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public interface Literals {
		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Specification <em>Specification</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Specification
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSpecification()
		 * @generated
		 */
		public static final EClass SPECIFICATION = eINSTANCE.getSpecification();

		/**
		 * The meta object literal for the '<em><b>Atoms</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__ATOMS = eINSTANCE.getSpecification_Atoms();

		/**
		 * The meta object literal for the '<em><b>Processes</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__PROCESSES = eINSTANCE.getSpecification_Processes();

		/**
		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__FUNCTIONS = eINSTANCE.getSpecification_Functions();

		/**
		 * The meta object literal for the '<em><b>Equations</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__EQUATIONS = eINSTANCE.getSpecification_Equations();

		/**
		 * The meta object literal for the '<em><b>Initial</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__INITIAL = eINSTANCE.getSpecification_Initial();

		/**
		 * The meta object literal for the '<em><b>Sorts</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SPECIFICATION__SORTS = eINSTANCE.getSpecification_Sorts();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Sort <em>Sort</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Sort
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSort()
		 * @generated
		 */
		public static final EClass SORT = eINSTANCE.getSort();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.PrimitiveSort <em>Primitive Sort</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.PrimitiveSort
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveSort()
		 * @generated
		 */
		public static final EClass PRIMITIVE_SORT = eINSTANCE.getPrimitiveSort();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.UserSort <em>User Sort</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.UserSort
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getUserSort()
		 * @generated
		 */
		public static final EClass USER_SORT = eINSTANCE.getUserSort();

		/**
		 * The meta object literal for the '<em><b>Definition</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute USER_SORT__DEFINITION = eINSTANCE.getUserSort_Definition();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Structure <em>Structure</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Structure
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getStructure()
		 * @generated
		 */
		public static final EClass STRUCTURE = eINSTANCE.getStructure();

		/**
		 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference STRUCTURE__ELEMENTS = eINSTANCE.getStructure_Elements();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Element <em>Element</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Element
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getElement()
		 * @generated
		 */
		public static final EClass ELEMENT = eINSTANCE.getElement();

		/**
		 * The meta object literal for the '<em><b>Parameters</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ELEMENT__PARAMETERS = eINSTANCE.getElement_Parameters();

		/**
		 * The meta object literal for the '<em><b>Structure</b></em>' container reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ELEMENT__STRUCTURE = eINSTANCE.getElement_Structure();

		/**
		 * The meta object literal for the '<em><b>Discriminator</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ELEMENT__DISCRIMINATOR = eINSTANCE.getElement_Discriminator();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Process <em>Process</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Process
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getProcess()
		 * @generated
		 */
		public static final EClass PROCESS = eINSTANCE.getProcess();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference PROCESS__ARGUMENTS = eINSTANCE.getProcess_Arguments();

		/**
		 * The meta object literal for the '<em><b>Action</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference PROCESS__ACTION = eINSTANCE.getProcess_Action();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Atom <em>Atom</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Atom
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAtom()
		 * @generated
		 */
		public static final EClass ATOM = eINSTANCE.getAtom();

		/**
		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ATOM__TYPE = eINSTANCE.getAtom_Type();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Action <em>Action</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Action
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAction()
		 * @generated
		 */
		public static final EClass ACTION = eINSTANCE.getAction();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.AtomicAction <em>Atomic Action</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.AtomicAction
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAtomicAction()
		 * @generated
		 */
		public static final EClass ATOMIC_ACTION = eINSTANCE.getAtomicAction();

		/**
		 * The meta object literal for the '<em><b>Atom</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ATOMIC_ACTION__ATOM = eINSTANCE.getAtomicAction_Atom();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ATOMIC_ACTION__ARGUMENTS = eINSTANCE.getAtomicAction_Arguments();

		/**
		 * The meta object literal for the '<em><b>Time</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute ATOMIC_ACTION__TIME = eINSTANCE.getAtomicAction_Time();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.CompositeAction <em>Composite Action</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.CompositeAction
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getCompositeAction()
		 * @generated
		 */
		public static final EClass COMPOSITE_ACTION = eINSTANCE.getCompositeAction();

		/**
		 * The meta object literal for the '<em><b>Actions</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference COMPOSITE_ACTION__ACTIONS = eINSTANCE.getCompositeAction_Actions();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Synchronization <em>Synchronization</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Synchronization
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSynchronization()
		 * @generated
		 */
		public static final EClass SYNCHRONIZATION = eINSTANCE.getSynchronization();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Parallelism <em>Parallelism</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Parallelism
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getParallelism()
		 * @generated
		 */
		public static final EClass PARALLELISM = eINSTANCE.getParallelism();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Sequence <em>Sequence</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Sequence
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSequence()
		 * @generated
		 */
		public static final EClass SEQUENCE = eINSTANCE.getSequence();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Choice <em>Choice</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Choice
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getChoice()
		 * @generated
		 */
		public static final EClass CHOICE = eINSTANCE.getChoice();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Instance <em>Instance</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Instance
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getInstance()
		 * @generated
		 */
		public static final EClass INSTANCE = eINSTANCE.getInstance();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference INSTANCE__ARGUMENTS = eINSTANCE.getInstance_Arguments();

		/**
		 * The meta object literal for the '<em><b>Process</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference INSTANCE__PROCESS = eINSTANCE.getInstance_Process();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Implication <em>Implication</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Implication
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getImplication()
		 * @generated
		 */
		public static final EClass IMPLICATION = eINSTANCE.getImplication();

		/**
		 * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IMPLICATION__CONDITION = eINSTANCE.getImplication_Condition();

		/**
		 * The meta object literal for the '<em><b>Action</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IMPLICATION__ACTION = eINSTANCE.getImplication_Action();

		/**
		 * The meta object literal for the '<em><b>Else</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IMPLICATION__ELSE = eINSTANCE.getImplication_Else();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Communication <em>Communication</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Communication
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getCommunication()
		 * @generated
		 */
		public static final EClass COMMUNICATION = eINSTANCE.getCommunication();

		/**
		 * The meta object literal for the '<em><b>Implications</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference COMMUNICATION__IMPLICATIONS = eINSTANCE.getCommunication_Implications();

		/**
		 * The meta object literal for the '<em><b>Parallelism</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference COMMUNICATION__PARALLELISM = eINSTANCE.getCommunication_Parallelism();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Allow <em>Allow</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Allow
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getAllow()
		 * @generated
		 */
		public static final EClass ALLOW = eINSTANCE.getAllow();

		/**
		 * The meta object literal for the '<em><b>Child</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ALLOW__CHILD = eINSTANCE.getAllow_Child();

		/**
		 * The meta object literal for the '<em><b>Atoms</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ALLOW__ATOMS = eINSTANCE.getAllow_Atoms();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Block <em>Block</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Block
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getBlock()
		 * @generated
		 */
		public static final EClass BLOCK = eINSTANCE.getBlock();

		/**
		 * The meta object literal for the '<em><b>Child</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference BLOCK__CHILD = eINSTANCE.getBlock_Child();

		/**
		 * The meta object literal for the '<em><b>Atoms</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference BLOCK__ATOMS = eINSTANCE.getBlock_Atoms();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Hide <em>Hide</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Hide
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getHide()
		 * @generated
		 */
		public static final EClass HIDE = eINSTANCE.getHide();

		/**
		 * The meta object literal for the '<em><b>Child</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference HIDE__CHILD = eINSTANCE.getHide_Child();

		/**
		 * The meta object literal for the '<em><b>Atoms</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference HIDE__ATOMS = eINSTANCE.getHide_Atoms();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Nameable <em>Nameable</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Nameable
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getNameable()
		 * @generated
		 */
		public static final EClass NAMEABLE = eINSTANCE.getNameable();

		/**
		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute NAMEABLE__NAME = eINSTANCE.getNameable_Name();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Summation <em>Summation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Summation
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSummation()
		 * @generated
		 */
		public static final EClass SUMMATION = eINSTANCE.getSummation();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SUMMATION__ARGUMENTS = eINSTANCE.getSummation_Arguments();

		/**
		 * The meta object literal for the '<em><b>Action</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SUMMATION__ACTION = eINSTANCE.getSummation_Action();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.BasicTerm <em>Basic Term</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.BasicTerm
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getBasicTerm()
		 * @generated
		 */
		public static final EClass BASIC_TERM = eINSTANCE.getBasicTerm();

		/**
		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference BASIC_TERM__TYPE = eINSTANCE.getBasicTerm_Type();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Function <em>Function</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Function
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunction()
		 * @generated
		 */
		public static final EClass FUNCTION = eINSTANCE.getFunction();

		/**
		 * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference FUNCTION__TYPE = eINSTANCE.getFunction_Type();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.FunctionType <em>Function Type</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.FunctionType
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunctionType()
		 * @generated
		 */
		public static final EClass FUNCTION_TYPE = eINSTANCE.getFunctionType();

		/**
		 * The meta object literal for the '<em><b>Domain</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference FUNCTION_TYPE__DOMAIN = eINSTANCE.getFunctionType_Domain();

		/**
		 * The meta object literal for the '<em><b>Codomain</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference FUNCTION_TYPE__CODOMAIN = eINSTANCE.getFunctionType_Codomain();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.TupleType <em>Tuple Type</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.TupleType
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getTupleType()
		 * @generated
		 */
		public static final EClass TUPLE_TYPE = eINSTANCE.getTupleType();

		/**
		 * The meta object literal for the '<em><b>Children</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference TUPLE_TYPE__CHILDREN = eINSTANCE.getTupleType_Children();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.FunctionCall <em>Function Call</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.FunctionCall
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getFunctionCall()
		 * @generated
		 */
		public static final EClass FUNCTION_CALL = eINSTANCE.getFunctionCall();

		/**
		 * The meta object literal for the '<em><b>Function</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference FUNCTION_CALL__FUNCTION = eINSTANCE.getFunctionCall_Function();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference FUNCTION_CALL__ARGUMENTS = eINSTANCE.getFunctionCall_Arguments();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Type <em>Type</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Type
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getType()
		 * @generated
		 */
		public static final EClass TYPE = eINSTANCE.getType();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.PrimitiveType <em>Primitive Type</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.PrimitiveType
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveType()
		 * @generated
		 */
		public static final EClass PRIMITIVE_TYPE = eINSTANCE.getPrimitiveType();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.SortType <em>Sort Type</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.SortType
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getSortType()
		 * @generated
		 */
		public static final EClass SORT_TYPE = eINSTANCE.getSortType();

		/**
		 * The meta object literal for the '<em><b>Sort</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SORT_TYPE__SORT = eINSTANCE.getSortType_Sort();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Term <em>Term</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Term
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getTerm()
		 * @generated
		 */
		public static final EClass TERM = eINSTANCE.getTerm();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Constraint <em>Constraint</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Constraint
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getConstraint()
		 * @generated
		 */
		public static final EClass CONSTRAINT = eINSTANCE.getConstraint();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.PrimitiveConstraint <em>Primitive Constraint</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.PrimitiveConstraint
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getPrimitiveConstraint()
		 * @generated
		 */
		public static final EClass PRIMITIVE_CONSTRAINT = eINSTANCE.getPrimitiveConstraint();

		/**
		 * The meta object literal for the '<em><b>True</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute PRIMITIVE_CONSTRAINT__TRUE = eINSTANCE.getPrimitiveConstraint_True();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Conjunction <em>Conjunction</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Conjunction
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getConjunction()
		 * @generated
		 */
		public static final EClass CONJUNCTION = eINSTANCE.getConjunction();

		/**
		 * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference CONJUNCTION__CHILDREN = eINSTANCE.getConjunction_Children();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Disjunction <em>Disjunction</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Disjunction
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getDisjunction()
		 * @generated
		 */
		public static final EClass DISJUNCTION = eINSTANCE.getDisjunction();

		/**
		 * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference DISJUNCTION__CHILDREN = eINSTANCE.getDisjunction_Children();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Negation <em>Negation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Negation
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getNegation()
		 * @generated
		 */
		public static final EClass NEGATION = eINSTANCE.getNegation();

		/**
		 * The meta object literal for the '<em><b>Child</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference NEGATION__CHILD = eINSTANCE.getNegation_Child();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Comparison <em>Comparison</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Comparison
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getComparison()
		 * @generated
		 */
		public static final EClass COMPARISON = eINSTANCE.getComparison();

		/**
		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference COMPARISON__LEFT = eINSTANCE.getComparison_Left();

		/**
		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference COMPARISON__RIGHT = eINSTANCE.getComparison_Right();

		/**
		 * The meta object literal for the '<em><b>Comparator</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute COMPARISON__COMPARATOR = eINSTANCE.getComparison_Comparator();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Equation <em>Equation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Equation
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getEquation()
		 * @generated
		 */
		public static final EClass EQUATION = eINSTANCE.getEquation();

		/**
		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference EQUATION__LEFT = eINSTANCE.getEquation_Left();

		/**
		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference EQUATION__RIGHT = eINSTANCE.getEquation_Right();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Lambda <em>Lambda</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Lambda
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getLambda()
		 * @generated
		 */
		public static final EClass LAMBDA = eINSTANCE.getLambda();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LAMBDA__ARGUMENTS = eINSTANCE.getLambda_Arguments();

		/**
		 * The meta object literal for the '<em><b>Body</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LAMBDA__BODY = eINSTANCE.getLambda_Body();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.IfThenElse <em>If Then Else</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.IfThenElse
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getIfThenElse()
		 * @generated
		 */
		public static final EClass IF_THEN_ELSE = eINSTANCE.getIfThenElse();

		/**
		 * The meta object literal for the '<em><b>If</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IF_THEN_ELSE__IF = eINSTANCE.getIfThenElse_If();

		/**
		 * The meta object literal for the '<em><b>Then</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IF_THEN_ELSE__THEN = eINSTANCE.getIfThenElse_Then();

		/**
		 * The meta object literal for the '<em><b>Else</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference IF_THEN_ELSE__ELSE = eINSTANCE.getIfThenElse_Else();

		/**
		 * The meta object literal for the '{@link nl.cwi.arne.mcrl2.Comparator <em>Comparator</em>}' enum.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see nl.cwi.arne.mcrl2.Comparator
		 * @see nl.cwi.arne.mcrl2.factory.MCRL2Package#getComparator()
		 * @generated
		 */
		public static final EEnum COMPARATOR = eINSTANCE.getComparator();

	}

} //MCRL2Package
